import { NextRequest, NextResponse } from 'next/server';
import * as fs from 'fs';
import * as path from 'path';

// 上传目录路径
const uploadDir = 'D:\\upload';

// 确保上传目录存在
if (!fs.existsSync(uploadDir)) {
  fs.mkdirSync(uploadDir, { recursive: true });
}

// 处理静态文件请求
export async function GET(request: NextRequest, { params }: { params: { path: string[] } }) {
  try {
    // 获取请求的文件路径
    const filePath = path.join(uploadDir, ...params.path);
    
    // 检查文件是否存在
    if (!fs.existsSync(filePath)) {
      return new NextResponse('文件不存在', { status: 404 });
    }
    
    // 读取文件
    const fileBuffer = fs.readFileSync(filePath);
    
    // 获取文件MIME类型
    const mimeType = getMimeType(filePath);
    
    // 返回文件内容
    return new NextResponse(fileBuffer, {
      headers: {
        'Content-Type': mimeType,
        'Cache-Control': 'public, max-age=31536000', // 缓存一年
      },
    });
  } catch (error) {
    console.error('获取静态文件失败:', error);
    return new NextResponse('获取文件失败', { status: 500 });
  }
}

// 根据文件扩展名获取MIME类型
function getMimeType(filePath: string): string {
  const ext = path.extname(filePath).toLowerCase();
  
  const mimeTypes: Record<string, string> = {
    '.jpg': 'image/jpeg',
    '.jpeg': 'image/jpeg',
    '.png': 'image/png',
    '.gif': 'image/gif',
    '.webp': 'image/webp',
    '.svg': 'image/svg+xml',
    '.ico': 'image/x-icon',
    '.pdf': 'application/pdf',
    '.txt': 'text/plain',
    '.html': 'text/html',
    '.css': 'text/css',
    '.js': 'application/javascript',
    '.json': 'application/json',
  };
  
  return mimeTypes[ext] || 'application/octet-stream';
}